package planificador;

import java.util.Random;  //Libreria necesaria para uso del Random

public class Proceso {
 	//Atributos: Declaracion de las Variables de cada Proceso
	private int id; //Identificador del Proceso
	public int ejecucion, respuesta, espera; //De tiempo
	public int rafaga;                       //Rafaga del Proceso
	public int tamano;                      //Tamaño de Memoria
	private String estado,nombre;           //Estado de cada Proceso
	
	//Constructor
	public Proceso(){ }                     //Metodo para Crear Procesos
        public Proceso crea (int mem,int id){   //"Crea" recibe el tamaño total de la memoria y el # Id de Procesos a crear; al final regresa un Proceso
            Random r = new Random();            //Objeto r de tipo aleatorio
            int x=(r.nextInt((int)(mem*.3+1)))+(int)(mem*.2);//Se realiza un case para asegurar que el tamaño sea entero y a su vez se delimita que este entre 20% y 50%
            Proceso p=new Proceso();//instancia un proceso
            p.id=id;//Se asigna un id del proceso
            p.nombre="Proceso"+id;//Se le pone un nobre al proceso
            p.tamano=x;//Se le asigna el valor calculado de memoria anteriormente 
            p.estado="Listo";//Todo proceso se inicializa en el "Estado Listo"
            p.rafaga=r.nextInt(10)+1;  //Se le asigna al proceso una rafaga aleatoria entre 1 y 10
           // p.llegada=0;            
        return p;//Regresamos al Proceso "p" creado
        }
//Metodos para leer y escribir a cada uno de los atributos del proceso
    public int getEjecucion() {
        return ejecucion;
    }

    public void setEjecucion(int ejecucion) {
        this.ejecucion = ejecucion;
    }

    public int getEspera() {
        return espera;
    }

    public void setEspera(int espera) {
        this.espera = espera;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getRespuesta() {
        return respuesta;
    }

    public void setRespuesta(int respuesta) {
        this.respuesta = respuesta;
    }

    public int getTamano() {
        return tamano;
    }

    public void setTamano(int tamano) {
        this.tamano = tamano;
    }

    public int getRafaga() {
        return rafaga;
    }

    public void setRafaga(int rafaga) {
        this.rafaga = rafaga;
    }



    
        
	public void Listar(){ //imprime un nodo de la lista (cada proceso creado)
		System.out.println("\tId:"+id+"\tNombre:"+nombre+"\tTamaño:"+tamano+"\tRafaga:"+rafaga);
             

	}

	
	}
	
